Verificar data de arquivo > que [RESOLVIDO]

1. Verificar data de arquivo > que [RESOLVIDO]

Daniel Fernandes
volcom

(usa Debian)

Enviado em 17/11/2009 - 13:44h

Pessoal,

Preciso fazer uma consulta numa lista (grande) de diretórios com nomes aleatórios dos arquivos com data maior que X.

Já tentei com o find e stat, mas não consegui trazer um resultado confiável.

Sei que existe uma forma com IF de verificar somente arquivos, mas como usar esse parâmetro verificando o tempo desse arquivo?

Resumindo, preciso saber onde estão os arquivos com mais de 120 dias e tirar uma listagem disso para verificação posterior.

Se não fui claro me avisem por favor.


  


2. Re: Verificar data de arquivo > que [RESOLVIDO]

nelio
neliobjr

(usa Red Hat)

Enviado em 17/11/2009 - 13:56h

Ola,

Amigo, desculpa, mas vc não foi claro, rs

Eu não entendi. o que vc quis dizer com tenho uma lista?!?! o que é essa lista? uma lista de arquivos? como foi gerada ?

Pelo que eu entedi, vc quer uma lista com os arquivos que tenha mais de 120 dias.... e a partir dai, mover, excluir, sei lá o que!!! é isso..

Se for com o find vc consegue, com a seguinte sintaxe.

find /caminho_pasta -ctime +120
# pode-se adicionar o que quer que seja feito. exemplo, apagar

find /caminho_pasta -ctime +120 -exec rm -rf {} \;

#se não for isso que eu entedi responda ai...

até mais..




3. Seja mais específico!

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 17/11/2009 - 14:01h

Que critérios devem ser observados para esses arquivos? Tipo se eles foram acessados a mais de 120 dias, ou foram alterados ou mesmo criados nesse período?

Exemplos básicos:

find . -atime +120 -type f -print # lista arquivos acessados a mais de 120 dias
find . -mtime +120 -type f -print # lista arquivos alterados a mais de 120 dias
find . -ctime +120 -type f -print # lista arquivos com atributos alterados a mais de 120 dias



4. Imaginei heheh

Daniel Fernandes
volcom

(usa Debian)

Enviado em 17/11/2009 - 14:24h

Vamos aos detalhes:

Tenho um servidor de e-mails Postfix com mais de 40.000 contas, essas que são administradas pelos clientes que criam as contas, mas claro, não excluem.

Portanto se eu não fizer essa manutenção meu servidor pode dar disk full.

A estrutura é:

/var/virtualmail/mail@exemplo.com/new

Esse diretório new é onde ficam as mensagens que NÃO foram lidas no seguinte formato:

-rw------- 1 postfix postfix 47719 2009-10-01 14:02 1254416569.V802I306dc3M780627.exemplo

Reparem que essa mensagem é de 01/10/2009.

Preciso verificar se esses arquivos tem mais de 120 dias, que é política adotada pela empresa para tomar as devidas medidas.

quando executo o find, hora lista os arquivos, hora não. Isso que me deixa intrigado.

O objetivo final é montar um script que execute diariamente criando um "relatório" com as contas que contém esses arquivos de mais de 120 dias e nos envie por e-mail (como tenho em outros scripts), pois nem todas as contas devem receber o mesmo tratamento.

Bom, espero que tenha esclarecido...se não por favor me avise novamente ;)

E desde já muito obrigado!


5. Re: Verificar data de arquivo > que [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 24/11/2009 - 15:55h

E se vc usar um find para achar todos os arquivos com mais de 120 dias e depois comparar esta lista com os nomes que você quer tratar?


6. Resolvido...

Daniel Fernandes
volcom

(usa Debian)

Enviado em 24/11/2009 - 16:05h

Na verdade o problema é que o atime, ctime, etc alteram a data de acesso e acabam não funcionando sempre, já que preciso executar isso quase diariamente.

Encontrei a seguinte solução/alternativa/gambiarra heheh

find /var/virtualmail -type f -ls | grep -e 'com/new/' -e 'net.br/new/' | grep -e ' Fev ' -e ' Mar ' -e ' Abr ' -e ' Mai ' -e ' Jun ' -e ' Jul '

Dando um grep nos meses que preciso filtrar.

pode não ser o modo mais elegante, mas sanou meu problema por enquanto.

De qualquer forma, me ajudaram muito!

Abraço e obrigado!


7. preciso de uma ajuda bem parecidaaa

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 30/11/2009 - 10:18h

bom diaaa..

tenho o mesmo problema q vc...

usamos maildir aqui na empresa...
as cx ficam em /home/emails/

quando recebo novo email, ele nao atualiza a data no primeiro diretório, exemplo: /home/emails/diego

a pasta diego nao atualiza a hora, o proximo diretorio, seria o Maildir, e este ele atualiza a hora... eu posso me basear por ele..

entao, seria assim... preciso que ele me diga quais estao sem ser alterados, logo, imagina-se q nao estao recebendo email, desde 2 meses.... entao.. pode ser q foi desligado da empresa..

alguem saberia como fazer isso?

obrigado

diego




8. Re: Verificar data de arquivo > que [RESOLVIDO]

Daniel Fernandes
volcom

(usa Debian)

Enviado em 30/11/2009 - 10:37h

Utilize do mesmo jeito que coloquei, mas troque o parâmetro do type para d, que faz o teste somente para diretórios.




9. conseguii

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 30/11/2009 - 13:26h

fala pessoal..

consegui da seguinte forma...

find /home/emails/ -name 'Maildir' -type d -mtime -30 > /home/suporte/achei.txt

ele vai procurar dentro do /home/emails/ tudo que conter Maildir, e vai ver quem possui alteração inferior a 30, que seriam dias e o resultado vai me jogar num arquivo...

obrigadoo

diego


10. Re: Verificar data de arquivo > que [RESOLVIDO]

Magno Lima
magnolinux

(usa Debian)

Enviado em 30/11/2009 - 13:49h

Lembrando que a opção "-type d" quer dizer que ele ira buscar somente pastas. para ele buscar arquivo seria a opção "f"

Flw... abraço.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts